//package com.fingerth.crawler.net.utils;
//
//import android.content.Context;
//import android.content.Intent;
//import android.location.LocationManager;
//import android.net.ConnectivityManager;
//import android.net.NetworkInfo;
//import android.net.NetworkInfo.State;
//import android.net.wifi.WifiInfo;
//import android.net.wifi.WifiManager;
//import android.telephony.TelephonyManager;
//
//import java.io.DataOutputStream;
//import java.net.Inet4Address;
//import java.net.InetAddress;
//import java.net.NetworkInterface;
//import java.util.Enumeration;
//import java.util.List;
//import java.util.regex.Matcher;
//import java.util.regex.Pattern;
//
//public final class NetUtils {
//
//    /**
//     * 检测网络是否连接,网络是否可用
//     */
//    public static boolean isNetConnected(Context context) {
//        if (context == null) {
//            return false;
//        }
//        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//        if (cm != null) {
//            for (NetworkInfo ni : cm.getAllNetworkInfo()) {
//                if (ni.isConnected()) {
//                    return true;
//                }
//            }
//        }
//        return false;
//    }
//
//    public static boolean isOnline(Context context) {
//        if (context == null) {
//            return false;
//        }
//        ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//        if (connMgr != null) {
//            NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
//            return (networkInfo != null && networkInfo.isConnected());
//        }
//        return false;
//    }
//
//    /**
//     * 检测wifi是否连接
//     */
//    public static boolean isWifiConnected(Context context) {
//        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//        if (cm != null) {
//            NetworkInfo networkInfo = cm.getActiveNetworkInfo();
//            return networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_WIFI;
//        }
//        return false;
//    }
//
//
//    /**
//     * 检测3G是否连接
//     */
//    public static boolean is3gConnected(Context context) {
//        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//        if (cm != null) {
//            NetworkInfo networkInfo = cm.getActiveNetworkInfo();
//            return networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_MOBILE;
//        }
//        return false;
//    }
//
//    /**
//     * 判断网址是否有效
//     */
//    public static boolean isLinkAvailable(String link) {
//        Pattern pattern = Pattern.compile("^(http://|https://)?((?:[A-Za-z0-9]+-[A-Za-z0-9]+|[A-Za-z0-9]+)\\.)+([A-Za-z]+)[/?:]?.*$", Pattern.CASE_INSENSITIVE);
//        Matcher matcher = pattern.matcher(link);
//        return matcher.matches();
//    }
//
//
//    /**
//     * 电话是否可用
//     */
//    public static boolean isTelephonyEnabled(Context context) {
//        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
//        return tm != null && tm.getSimState() == TelephonyManager.SIM_STATE_READY;
//    }
//
//
//    /**
//     * Gps是否打开
//     *
//     * @param context
//     * @return
//     */
//    public static boolean isGpsEnabled(Context context) {
//        LocationManager locationManager = ((LocationManager) context.getSystemService(Context.LOCATION_SERVICE));
//        List<String> accessibleProviders = locationManager.getProviders(true);
//        return accessibleProviders != null && accessibleProviders.size() > 0;
//    }
//
//    /**
//     * wifi是否打开
//     */
//    public static boolean isWifiEnabled(Context context) {
//        ConnectivityManager mgrConn = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//        TelephonyManager mgrTel = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
//        return ((mgrConn.getActiveNetworkInfo() != null && mgrConn.getActiveNetworkInfo().getState() == State.CONNECTED) || mgrTel.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS);
//    }
//
//
//    /**
//     * 打开网络设置界面
//     * <p>3.0以下打开设置界面</p>
//     */
//    public static void openWirelessSettings(Context ctx) {
//        if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.JELLY_BEAN) {
//            ctx.startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
//        } else {
//            ctx.startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
//        }
//    }
//
//
//    /**
//     * wifi网络
//     */
//    public static final String TYPE_WIFI = "WIFI";
//    /**
//     * 3G网络
//     */
//    public static final String TYPE_MOBILE = "MOBILE";
//    /**
//     * 无网络连接
//     */
//    public static final String TYPE_NONE = "NONE";
//
//    /***
//     * 获取网络类型名称
//     * @param context
//     * @return
//     */
//    public static String getNetworkTypeName(Context context) {
//        ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//        //Wifi
//        NetworkInfo wifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
//        if (wifiInfo != null) {
//            State state = wifiInfo.getState();
//            if (state == State.CONNECTED || state == State.CONNECTING) {
//                return TYPE_WIFI;
//            }
//        }
//        //3G
//        NetworkInfo mobileInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
//        if (mobileInfo != null) {
//            State state = mobileInfo.getState();
//            if (state == State.CONNECTED || state == State.CONNECTING) {
//                return TYPE_MOBILE;
//            }
//        }
//        return TYPE_NONE;
//    }
//
//
//
//    /**
//     * 获取当前网络连接类型
//     */
//    public static String getIp(Context context) {
//        try {
//            ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//            NetworkInfo info = cm.getActiveNetworkInfo();
//            if ((info != null) && (info.isConnected())) {
//                Enumeration<NetworkInterface> en;
//                Enumeration<InetAddress> enumIpAddr;
//                if (info.getType() == 0) {
//                    for (en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
//                        NetworkInterface intf = (NetworkInterface) en.nextElement();
//                        for (enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
//                            InetAddress inetAddress = (InetAddress) enumIpAddr.nextElement();
//                            if ((!inetAddress.isLoopbackAddress()) && ((inetAddress instanceof Inet4Address))) {
//                                return inetAddress.getHostAddress();
//                            }
//                        }
//                    }
//                } else if (info.getType() == 1) {
//                    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
//                    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
//                    return intIP2StringIP(wifiInfo.getIpAddress());
//                }
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return "";
//    }
//
//    private static String intIP2StringIP(int ip) {
//        return (ip & 0xFF) + "." + (ip >> 8 & 0xFF) + "." + (ip >> 16 & 0xFF) + "." + (ip >> 24 & 0xFF);
//    }
//
//    /**
//     * 判断GPS是否开启，GPS或者AGPS开启一个就认为是开启的
//     *
//     * @param context
//     * @return true 表示开启
//     */
//    public static final boolean isOPen(final Context context) {
//        LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
//        // 通过GPS卫星定位，定位级别可以精确到街（通过24颗卫星定位，在室外和空旷的地方定位准确、速度快）
//        boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
//        // 通过WLAN或移动网络(3G/2G)确定的位置（也称作AGPS，辅助GPS定位。主要用于在室内或遮盖物（建筑群或茂密的深林等）密集的地方定位）
//        boolean network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
//        return gps || network;
//
//    }
//
//
//    /**
//     * Root权限
//     */
//    public static boolean RootCommand(String command) {
//
//        Process process = null;
//        DataOutputStream os = null;
//        try {
//            process = Runtime.getRuntime().exec("su");
//            os = new DataOutputStream(process.getOutputStream());
//            os.writeBytes(command + "\n");
//            os.writeBytes("exit\n");
//            os.flush();
//            process.waitFor();
//        } catch (Exception e) {
//            return false;
//        } finally {
//            try {
//                if (os != null) os.close();
//                if (process != null) process.destroy();
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//        }
//        return true;
//    }
//}
